package cn.com.fig.mybatis;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.session.SqlSession;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
 * 操作数据库通用类，封装简单增删该查方法
 * @author eternalfig
 *
 */
@Component
public class DbUtils<T> {
	Logger logger = LoggerFactory.getLogger(getClass());
	@Autowired
	private SqlSession sqlSession;
	
	/**
	 * select查询方法封装
	 * @param statement
	 * @param parameter
	 * @return
	 */
	public List<Map<String,Object>> queryList(String statement,Map parameter){
		if(parameter.isEmpty())
			return sqlSession.selectList(statement);
		
		return sqlSession.selectList(statement, parameter);
	}
	
	public T get(String statement,String parameter){
		return sqlSession.selectOne(statement, parameter);
	}
	/**
	 * 通用新增方法封装
	 * @param statement
	 * @param parameter
	 * @return
	 */
	public int insert(String statement,Map parameter){
		try {
			return sqlSession.insert(statement, parameter);
		} catch (Exception e) {
			logger.error("插入方法异常：",e);
			return 0;
		}
	}
	
	/**
	 * 通用批量新增方法封装
	 * @param statement
	 * @param param
	 * @return
	 */
	public int insertBatch(String statement,List<Map<String, Object>> param){
		try {
			return sqlSession.insert(statement, param);
		} catch (Exception e) {
			logger.error("插入方法异常：",e);
			return 0;
		}
	}
	/**
	 * 通用更新方法封装
	 * @param statement
	 * @param parameter
	 * @return
	 */
	public int update(String statement,Map parameter){
		return sqlSession.update(statement, parameter);
	}
	/**
	 * 通用删除方法封装
	 * @param statement
	 * @param parameter
	 * @return
	 */
	public int delete(String statement,String priId){
		return sqlSession.delete(statement, priId);
	}
}
